using UniversalAdmin.Application.Common;
using UniversalAdmin.Application.Features.Users.Queries;
using UniversalAdmin.Application.DTOs;

namespace UniversalAdmin.Application.Services;

public interface IUserService
{
  Task<PagedResult<UserDto>> GetUsersAsync(UserQueryParameters parameters);
  Task<UserDto> GetUserByIdAsync(int id);
  Task<UserWithMenusDto> GetUserWithMenusAsync(int userId);
  Task<UserDto> CreateUserAsync(CreateUserDto createUserDto);
  Task<PagedResult<UserDto>> SearchUsersAsync(string? userName, string? email, int page, int size);
  Task<UserDto> UpdateUserAsync(int id, UpdateUserDto updateUserDto);
  Task AssignRolesAsync(int userId, List<int> roleIds);
  Task DeleteUserAsync(int id);
  Task<bool> ChangePasswordAsync(int userId, ChangePasswordDto changePasswordDto);
}